#ifndef UTILS_H
#define UTILS_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdarg.h>
#include <stdint.h>
#include <time.h>

#ifdef __cplusplus
extern "C" {
#endif

// 内存管理
void *qemu_malloc(size_t size);
void *qemu_mallocz(size_t size);
void qemu_free(void *ptr);
char *qemu_strdup(const char *str);

// 日志系统
void report_error(const char *fmt, ...);
void report_info(const char *fmt, ...);
void report_warning(const char *fmt, ...);
void report_debug(const char *fmt, ...);

// 工具函数
int64_t round_to_cluster(int64_t value, int cluster_size);
uint64_t get_file_size(const char *filename);
int is_power_of_two(uint64_t x);
int file_exists(const char *filename);
void hex_dump(const uint8_t *data, size_t size, uint64_t offset);

// 时间工具
uint64_t get_timestamp_ms(void);

#ifdef __cplusplus
}
#endif

#endif